{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import matplotlib as mpl\n",
    "import numpy as np\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "import scipy as sp\n",
    "import sympy as sy\n",
    "sy.init_printing() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.set_printoptions(precision=3)\n",
    "np.set_printoptions(suppress=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def round_expr(expr, num_digits):\n",
    "    return expr.xreplace({n : round(n, num_digits) for n in expr.atoms(sy.Number)})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> The Gram-Schmidt Process"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The <font face=\"gotham\" color=\"red\"> Gram-Schmidt Process </font> is an algorithm of producing an orthogonal or orthonormal basis."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <font face=\"gotham\" color=\"purple\"> An Example in $\\mathbb{R}^3$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\\text { Let } W=\\operatorname{Span}\\left\\{\\mathbf{x}_{1}, \\mathbf{x}_{2}, \\mathbf{x}_{3}\\right\\}, \\text { where } \\mathbf{x}_{1}=\\left[\\begin{array}{l}\n",
    "3 \\\\\n",
    "6 \\\\\n",
    "2\n",
    "\\end{array}\\right] \\text {, } \\mathbf{x}_{2}=\\left[\\begin{array}{l}\n",
    "1 \\\\\n",
    "2 \\\\\n",
    "4\n",
    "\\end{array}\\right]\\text {, and }\\mathbf{x}_{3}=\\left[\\begin{array}{l}\n",
    "2 \\\\\n",
    "-2 \\\\\n",
    "1\n",
    "\\end{array}\\right]$$.\n",
    "\n",
    "They are not orthogonal, but we can construct an orthogonal basis $\\{\\mathbf{v}_1, \\mathbf{v}_2, \\mathbf{v}_3\\}$ for $W$ based on $\\left\\{\\mathbf{x}_{1}, \\mathbf{x}_{2}, \\mathbf{x}_{3}\\right\\}$. We will visualize the process."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we plot the $W=\\operatorname{Span}\\left\\{\\mathbf{x}_{1}, \\mathbf{x}_{2},\\mathbf{x}_{3}\\right\\}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "######################## Subspace W ##############################\n",
    "s = np.linspace(-1, 1, 10)\n",
    "t = np.linspace(-1, 1, 10)\n",
    "S, T = np.meshgrid(s, t)\n",
    "\n",
    "vec = np.array([[[0,0,0,3, 6, 2]],\n",
    "             [[0,0,0,1, 2, 4]],\n",
    "             [[0,0,0,2, -2, 1]]])\n",
    "\n",
    "X = vec[0,:,3] * S + vec[1,:,3] * T\n",
    "Y = vec[0,:,4] * S + vec[1,:,4] * T\n",
    "Z = vec[0,:,5] * S + vec[1,:,5] * T\n",
    "\n",
    "fig = plt.figure(figsize = (7, 7))\n",
    "ax = fig.add_subplot(projection='3d')\n",
    "ax.plot_wireframe(X, Y, Z, linewidth = 1.5, alpha = .3)\n",
    "\n",
    "############################# x1 and x2 ##############################\n",
    "colors = ['r','b','g']\n",
    "s = ['$x_1$', '$x_2$', '$x_3$']\n",
    "for i in range(vec.shape[0]):\n",
    "    X,Y,Z,U,V,W = zip(*vec[i,:,:])\n",
    "    ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False,\n",
    "              color = colors[i], alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "              linestyles = 'solid',linewidths = 3)\n",
    "    ax.text(vec[i,:,3][0], vec[i,:,4][0], vec[i,:,5][0], s = s[i], size = 15)\n",
    "\n",
    "ax.set_xlabel('x-axis')\n",
    "ax.set_ylabel('y-axis')\n",
    "ax.set_zlabel('z-axis')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we choose $\\mathbf{v}_1= \\mathbf{x}_1$, then the orthogonal component of projection of $\\mathbf{x}_2$ onto $\\mathbf{v}_1$ is $\\mathbf{v}_2$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define $\\text{Proj}_{\\mathbf{v}_1}\\mathbf{x}_2 = \\alpha \\mathbf{x}_1$, then $(\\mathbf{x}_2 - \\alpha \\mathbf{x}_1)\\cdot \\mathbf{x}_1 = 0$, rearange for $\\alpha$\n",
    "\n",
    "$$\n",
    "\\alpha = \\frac{\\mathbf{x}_2^T\\mathbf{x}_1}{\\mathbf{x}_1^T\\mathbf{x}_1}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "According to definition above\n",
    "\n",
    "$$\n",
    "\\text{Proj}_{\\mathbf{v}_1}\\mathbf{x}_2 = \\alpha \\mathbf{x}_1 = \\frac{\\mathbf{x}_2^T\\mathbf{x}_1}{\\mathbf{x}_1^T\\mathbf{x}_1}\\mathbf{x}_1\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The orthogonal component, $\\mathbf{v}_2$ is \n",
    "\n",
    "$$\n",
    "\\mathbf{x}_2- \\text{Proj}_{\\mathbf{v}_1}\\mathbf{x}_2 =\\mathbf{x}_2 - \\frac{\\mathbf{x}_2^T\\mathbf{x}_1}{\\mathbf{x}_1^T\\mathbf{x}_1}\\mathbf{x}_1\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'x1' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-5-93d09c846278>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[0mx2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mv2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mx2\u001b[0m \u001b[1;33m-\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mx2\u001b[0m\u001b[1;33m@\u001b[0m\u001b[0mx1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx1\u001b[0m\u001b[1;33m@\u001b[0m\u001b[0mx1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mx1\u001b[0m\u001b[1;33m;\u001b[0m\u001b[0mv2\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m: name 'x1' is not defined"
     ]
    }
   ],
   "source": [
    "x2 = np.array([1, 2, 4])\n",
    "v2 = x2 - (x2@x1)/(x1@x1)*x1;v2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib notebook\n",
    "\n",
    "######################## Subspace W ##############################\n",
    "\n",
    "s = np.linspace(-1, 1, 10)\n",
    "t = np.linspace(-1, 1, 10)\n",
    "S, T = np.meshgrid(s, t)\n",
    "\n",
    "x1,v1 = np.array([3, 6, 2]),np.array([3, 6, 2])\n",
    "x2 = np.array([1, 2, 4])\n",
    "x3 = np.array([2, -2, 1])\n",
    "\n",
    "X = x1[0] * S + x2[0] * T\n",
    "Y = x1[1] * S + x2[1] * T\n",
    "Z = x1[2] * S + x2[2] * T\n",
    "\n",
    "fig = plt.figure(figsize = (7, 7))\n",
    "ax = fig.add_subplot(projection='3d')\n",
    "ax.plot_wireframe(X, Y, Z, linewidth = 1.5, alpha = .3)\n",
    "\n",
    "############################# x1, x2, v2, alpha*v1 ##############################\n",
    "\n",
    "vec = np.array([[0, 0, 0, x1[0], x1[1], x1[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'red', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, x2[0], x2[1], x2[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'blue', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, x3[0], x3[1], x3[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'green', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, v2[0], v2[1], v2[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'purple', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "alpha = (x2@x1)/(x1@x1)\n",
    "\n",
    "vec = np.array([[0, 0, 0, alpha*x1[0], alpha*x1[1], alpha*x1[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'blue', alpha = .6,arrow_length_ratio = .12, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "\n",
    "ax.text(x1[0], x1[1], x1[2], '$\\mathbf{x}_1 = \\mathbf{v}_1 $', size = 15)\n",
    "ax.text(x2[0], x2[1], x2[2], '$\\mathbf{x}_2$', size = 15)\n",
    "ax.text(x3[0], x3[1], x3[2], '$\\mathbf{x}_3$', size = 15)\n",
    "ax.text(v2[0], v2[1], v2[2], '$\\mathbf{v}_2$', size = 15)\n",
    "\n",
    "ax.text(x=alpha*x1[0], y=alpha*x1[1], z=alpha*x1[2], s = r'$\\mathbf{\\hat{x}}_2$', size = 15)\n",
    "\n",
    "ax.set_xlabel('x-axis')\n",
    "ax.set_ylabel('y-axis')\n",
    "ax.set_zlabel('z-axis')\n",
    "\n",
    "################################# Dashed Line ##################################\n",
    "\n",
    "point1 = [alpha*x1[0], alpha*x1[1], alpha*x1[2]]\n",
    "point2 = [x2[0], x2[1], x2[2]]\n",
    "line1 = np.array([point1, point2])\n",
    "ax.plot(line1[:,0], line1[:,1], line1[:, 2], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "point1 = [v2[0], v2[1], v2[2]]\n",
    "point2 = [x2[0], x2[1], x2[2]]\n",
    "line1 = np.array([point1, point2])\n",
    "ax.plot(line1[:,0], line1[:,1], line1[:, 2], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next step, we find $\\mathbf{v}_3$, define $W = \\text{Span}\\{\\mathbf{v}_1, \\mathbf{v}_2\\}$\n",
    "\n",
    "$$\n",
    "\\mathbf{x}_3- \\text{Proj}_{W}\\mathbf{x}_3 =\\mathbf{x}_3 - \\frac{\\mathbf{x}_3^T\\mathbf{v}_1}{\\mathbf{v}_1^T\\mathbf{v}_1}\\mathbf{v}_1-\\frac{\\mathbf{x}_3^T\\mathbf{v}_2}{\\mathbf{v}_2^T\\mathbf{v}_2}\\mathbf{v}_2\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Again, the codes are superfluous, yet exceedingly intuitive."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x3 = np.array([2, -2, 1])\n",
    "projW_x3 = (x3@v1)/(v1@v1)*v1 + (x3@v2)/(v2@v2)*v2\n",
    "v3 = x3 - projW_x3; v3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib notebook\n",
    "\n",
    "######################## Subspace W ##############################\n",
    "\n",
    "s = np.linspace(-1, 1, 10)\n",
    "t = np.linspace(-1, 1, 10)\n",
    "S, T = np.meshgrid(s, t)\n",
    "\n",
    "x1 = np.array([3, 6, 2])\n",
    "x2 = np.array([1, 2, 4])\n",
    "x3 = np.array([2, -2, 1])\n",
    "\n",
    "X = x1[0] * S + x2[0] * T\n",
    "Y = x1[1] * S + x2[1] * T\n",
    "Z = x1[2] * S + x2[2] * T\n",
    "\n",
    "fig = plt.figure(figsize = (9, 9))\n",
    "ax = fig.add_subplot(projection='3d')\n",
    "ax.plot_wireframe(X, Y, Z, linewidth = 1.5, alpha = .3)\n",
    "\n",
    "############################# x1, x2, v2, alpha*v1 ##############################\n",
    "\n",
    "vec = np.array([[0, 0, 0, x1[0], x1[1], x1[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'red', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, x2[0], x2[1], x2[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'red', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, x3[0], x3[1], x3[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'red', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, v2[0], v2[1], v2[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'purple', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, projW_x3[0], projW_x3[1], projW_x3[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'black', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "\n",
    "\n",
    "alpha = (x2@x1)/(x1@x1)\n",
    "projW_x2 = np.zeros(3)\n",
    "projW_x2[0], projW_x2[1], projW_x2[2] = alpha*x1[0],alpha*x1[1], alpha*x1[2]\n",
    "\n",
    "vec = np.array([[0, 0, 0, projW_x2[0], projW_x2[1], projW_x2[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'blue', alpha = .6,arrow_length_ratio = .12, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "vec = np.array([[0, 0, 0, v3[0], v3[1], v3[2]]])\n",
    "X, Y, Z, U, V, W = zip(*vec)\n",
    "ax.quiver(X, Y, Z, U, V, W, length=1, normalize=False, color = 'purple', alpha = .6,arrow_length_ratio = .08, pivot = 'tail',\n",
    "          linestyles = 'solid',linewidths = 3)\n",
    "\n",
    "\n",
    "ax.text(x1[0], x1[1], x1[2], '$\\mathbf{x}_1 = \\mathbf{v}_1 $', size = 15)\n",
    "ax.text(x2[0], x2[1], x2[2], '$\\mathbf{x}_2$', size = 15)\n",
    "ax.text(x3[0], x3[1], x3[2], '$\\mathbf{x}_3$', size = 15)\n",
    "ax.text(v2[0], v2[1], v2[2], '$\\mathbf{v}_2$', size = 15)\n",
    "ax.text(v3[0], v3[1], v3[2], '$\\mathbf{v}_3$', size = 15)\n",
    "ax.text(projW_x3[0], projW_x3[1], projW_x3[2], '$\\hat{\\mathbf{x}}_3$', size = 15)\n",
    "\n",
    "ax.text(x=alpha*x1[0], y=alpha*x1[1], z=alpha*x1[2], s = r'$\\mathbf{\\hat{x}}_2$', size = 15)\n",
    "\n",
    "ax.set_xlabel('x-axis')\n",
    "ax.set_ylabel('y-axis')\n",
    "ax.set_zlabel('z-axis')\n",
    "\n",
    "################################# Dashed Line ##################################\n",
    "\n",
    "point1 = [alpha*x1[0], alpha*x1[1], alpha*x1[2]]\n",
    "point2 = [x2[0], x2[1], x2[2]]\n",
    "line1 = np.array([point1, point2])\n",
    "ax.plot(line1[:,0], line1[:,1], line1[:, 2], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "point1 = [v2[0], v2[1], v2[2]]\n",
    "point2 = [x2[0], x2[1], x2[2]]\n",
    "line1 = np.array([point1, point2])\n",
    "ax.plot(line1[:,0], line1[:,1], line1[:, 2], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "point1 = [projW_x3[0], projW_x3[1], projW_x3[2]]\n",
    "point2 = [x3[0], x3[1], x3[2]]\n",
    "line1 = np.array([point1, point2])\n",
    "ax.plot(line1[:,0], line1[:,1], line1[:, 2], c = 'b', lw = 3.5,alpha =0.5, ls = '--')\n",
    "\n",
    "\n",
    "################################ Axes ######################################\n",
    "ax.set_xlim3d(-5, 5)\n",
    "ax.set_ylim3d(-5, 5)\n",
    "ax.set_zlim3d(-5, 5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we have orthogonal basis $\\{\\mathbf{v}_1, \\mathbf{v}_2, \\mathbf{v}_3\\}$, and futher we can normalize them.The column of $U$ is a set of orthonormal basis."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "v1 = x1\n",
    "u1 = v1/sp.linalg.norm(v1)\n",
    "u2 = v2/sp.linalg.norm(v2)\n",
    "u3 = v3/sp.linalg.norm(v3)\n",
    "\n",
    "U = np.vstack((u1, u2, u3)).T\n",
    "U"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "U.T@U"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also use SymPy built-in algorithm ```orthogonalize``` or ```GramSchmidt```, for Gram-Schmidt process."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <font face=\"gotham\" color=\"purple\"> SymPy Functions for Gram-Schimidt Process"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We need to prepare all the vectors in a form\n",
    "\n",
    "$$\n",
    "L = [\\mathbf v_1,\\ \\mathbf v_2,\\ ...,\\ \\mathbf v_n]\n",
    "$$\n",
    "\n",
    "where $\\mathbf v_i, i\\in (1,2,...n)$ is a column vector."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "L = [sy.Matrix([x1]).T, sy.Matrix([x2]).T, sy.Matrix([x3]).T]\n",
    "ort = sy.GramSchmidt(L)\n",
    "ort_norm = sy.GramSchmidt(L, orthonormal = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ort"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ort_norm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Test if it is normalized."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(3):\n",
    "    print(ort_norm[i].T*ort_norm[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Any two vectors are also perpendicular, for instance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ort_norm[0].T*ort_norm[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ort_norm[1].T*ort_norm[2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Similarly we can use ```sy.matrices.MatrixSubspaces.orthogonalize()```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "sy.matrices.MatrixSubspaces.orthogonalize(sy.Matrix([x1]).T, sy.Matrix([x2]).T, sy.Matrix([x3]).T, normalize = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> The QR Decomposition"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "QR decomposition is also for solving linear systems and very common for least squares solution as well. QR decomposition is based Gram-Schmidt process we just saw."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Consider two matrices\n",
    "\n",
    "$$A=\\left[\\mathbf{a}_{1}, \\ldots, \\mathbf{a}_{n}\\right]\\quad\\text{and}\\quad Q=\\left[\\mathbf{u}_{1}, \\ldots, \\mathbf{u}_{n}\\right]$$\n",
    "\n",
    "where $Q$ is the orthonormalized $A$. We define $R = Q^TA$:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$R=\\left[\\begin{array}{cccc}\n",
    "\\mathbf{u}_{1}^T \\mathbf{a}_{1}& \\mathbf{u}_{1}^T \\mathbf{a}_{2} &\\mathbf{u}_{1}^T\\mathbf{a}_{3} & \\dots &\\mathbf{u}_{1}^T\\mathbf{a}_{n}\\\\\n",
    "0 &\\mathbf{u}_{2}^T\\mathbf{a}_{2} & \\mathbf{u}_{2}^T \\mathbf{a}_{3}& \\dots &\\mathbf{u}_{2}^T\\mathbf{a}_{n}\\\\\n",
    "0 & 0 & \\mathbf{u}_{3}^T \\mathbf{a}_{3}& \\dots& \\mathbf{u}_{3}^T\\mathbf{a}_{n}\\\\\n",
    "\\vdots & \\vdots & \\vdots & \\ddots & \\vdots\\\\\n",
    "0& 0&0 & \\dots &\\mathbf{u}_{n}^T\\mathbf{a}_{n}\n",
    "\\end{array}\\right]$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Because $Q$ is an orthonormal matrix, that\n",
    "\n",
    "$$\n",
    "A = QR\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "A = np.round(np.random.randn(10, 5)*100); A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Q, R = np.linalg.qr(A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "Q"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "R"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Try not to use $QR$ decomposition in SymPy directly, here we convert fraction into float with ```sy.N()``` and round it with ```round_expr```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "round_expr(sy.N(sy.matrices.MatrixBase.QRdecomposition(sy.randMatrix(4, 3))[0]),4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "round_expr(sy.N(sy.matrices.MatrixBase.QRdecomposition(sy.randMatrix(4, 3))[1]),4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Most of times we are using built-in algorithm rather than writing our own."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# <font face=\"gotham\" color=\"purple\"> The Least-Squares Problem"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are not diving deep into this topic, my advanced econometrics notebooks have full content about it. For those who have not studied linear regression or econometrics, surfice to know that least-squares solutions are finding a coordinate $\\beta$ for basis of $\\text{Col}X$, which forms a linear combination of $\\hat{y}$.\n",
    "\n",
    "$\\hat{y}$ is the orthogonal projection of $y$ onto $\\text{Col}X$, denoted as $\\hat{y} = \\text{proj}_{\\text{Col}X}y$. \n",
    "\n",
    "And the distance between $y$ and $\\hat{y}$ is the shortest among all possible $\\|y - X\\beta \\|$ in the vector space, that is \n",
    "\n",
    "$$\n",
    "\\|y - X\\hat{\\beta}\\| \\leq \\|y - X\\beta \\|\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The $\\text{Col}X$ is orthogonal to the component of orthogonal projection of $y$, then\n",
    "\n",
    "\\begin{align}\n",
    "X^T(y-X\\hat{\\beta})&=0\\\\\n",
    "X^Ty &= X^TX\\hat{\\beta}\\\\\n",
    "\\hat{\\beta} &= (X^TX)^{-1}X^Ty \n",
    "\\end{align}"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
